1. Field of Invention
The present invention relates generally to communication networks. More particularly, the present invention relates to methods of fault protection in communication networks.
2. Description of the Related Art
Various network topologies utilize rings. Resilient Packet Ring (RPR) is an example of a network topology for fiber optic rings. The Institute of Electrical and Electronic Engineers (IEEE) defines RPR standards in IEEE 802.17, which is incorporated herein by reference in its entirety. RPR is a layer two ring technology in a networking framework defined by the Open Systems Interconnection (OSI) model, and supports bi-directional communications around both sides of a ring using redundant paths substantially simultaneously. At layer two, or a data link layer, data packets are encoded and decoded into bits. Layer two is divided into two sublayers, a Media Access Control (MAC) layer and a Logical Link Control (LLC) layer. The MAC sublayer is arranged to substantially control how a node of a network accesses and transmits data, while the LLC layer generally controls frame synchronization, controls flow control, and provides error checking.
RPR generally treats a ring as a broadcast medium, and does not specify a higher level loop prevention mechanism. When two rings are in communication over interconnects, looping may occur. FIG. 1A is a diagrammatic representation of two RPR clusters that are in communication over a set of interconnects. A first RPR cluster 110a and a second RPR cluster 110b are in communication over interconnects 114a-d. More than one interconnect 114a-d is typically present between first RPR cluster 110a and second RPR cluster 110b to avoid a single point of failure.
When first RPR cluster 110a and second RPR cluster 110b choose the same interconnect, i.e., interconnect 114c as shown in FIG. 1B, to use for communications, then looping is not likely to occur. However, when first RPR cluster 110a and second RPR cluster 110b select different interconnects 114a-d to communicate over, looping may occur. FIG. 1C is a diagrammatic representation of first RPR cluster 110a that sends messages to second RPR cluster 110b over interconnect 114d and second RPR cluster 110b sending messages to first RPR cluster 110a over interconnect 114b. Looping may occur, as when first RPR cluster 110a receives a message for broadcast on interconnect 114b, first RPR cluster 110a may broadcast the message back to second RPR cluster 110b on interconnect 114d. Such looping may flood interconnects 114b, 114d, and degrade the performance of interconnects 114b, 114d, as well as of first RPR cluster 110a and second RPR cluster 110b. Looping may also result in the replication of frames contained in messages when a frame broadcast on interconnect 114b is returned on interconnect 114d. 
Looping will be described in more detail with respect to FIG. 2. Multiple active paths between rings often cause loops in between the rings. When a loop is in existence in a network, duplication of messages may occur, as some nodes effectively receive messages from different sides. By way of example, when a node is a bridge, looping results in the bridge receiving a message on both sides of the bridge. As a result, a message forwarding algorithm of the bridge may become confused, and duplicate frames may be forwarded.
FIG. 2 is a diagrammatic representation of a network which includes nodes arranged in two rings, i.e., a bridged RPR network with a dual ring interconnect. A first ring includes nodes 206a-h, and a second ring includes nodes 216a-h. When a customer 202 wishes to send a message on layer two, as for example a message that is arranged as a plurality of frames, to another customer 220, the message is propagated through the first ring and the second ring. As the rings are linked by interconnects 210, 212, the message may loop through nodes 206a-h. Once the message reaches nodes 206c, 206g, the message is sent on interconnects 212, 210, respectively, to nodes 216c, 216g, respectively. Both node 216c and node 216g propagate the message through the second ring and, eventually, to customer 220 through node 216e. 
However, when the version of the message received on node 216c via interconnect 212 is forwarded to node 216g, node 216g may forward that version of the message through interconnect 210 back to node 206g. Similarly, when the version of the message received on node 216g via interconnect 210 is forwarded to node 216c, node 216c may forward that version of the message through interconnect 212 back to node 206c. Hence, the message is effectively looped between the first ring and the second ring.
A spanning tree protocol may be used in some instances to effectively guarantee a loop-free network. To avoid path redundancy, a spanning tree protocol defines a tree that spans all nodes in a network. A spanning tree protocol effectively causes some redundant interconnects to be blocked. If one unblocked interconnect fails or otherwise becomes unavailable, a spanning tree algorithm reconfigures the network topology by unblocking a blocked path. However, a spanning tree protocol is relatively slow in recovering from a fault. In other words, once a fault is discovered, although a spanning tree protocol may be effective in reconfiguring a system, the reconfiguration process is relatively slow. The performance of the system may be compromised by a slow recover reconfiguration or recover process.
Though a rapid spanning tree protocol, which is implemented in some networks to guarantee a loop-free network, generally provides a faster reconfiguration process than a spanning tree protocol, a rapid spanning tree protocol does not provide rapid reconfiguration in a ring. Hence, a rapid spanning tree protocol may not be used to ensure that connectivity between rings is restored after a fault occurs.
Therefore, what is needed is a method and an apparatus for allowing a network that includes rings to operate without loops and to be relatively rapidly reconfigured in the event of a failure of an interconnect between the rings. That is, what is desired is a system that prevents loops from forming between rings, and that ensures a relatively efficient restoration of connectivity between the rings in the event of a failure.